iT邦幫忙

2022 iThome 鐵人賽

DAY 26
0

所謂心意要明確表達讓對方知道,繼昨天我們已經能寫出很大段的句子了,讓我們要把它講出來。

Python有gTTS是Google Translate's text-to-speech的library,範例如下,非常簡單:

from gtts import gTTS
tts = gTTS('hello')
tts.save('hello.mp3')

存成mp3檔案我們再把它打開,就會有大家常聽到的google女士音,也可以講各國語言,包含中文、日文等,基本就是google翻譯上有的都有,語系就在lang設定,例如中文,而中文有分zh-tw和zh-cn,聲線有些微差異,但我簡單測試輸入文字是繁體或簡體並沒有影響:

tts = gTTS(text='張無忌見三名老僧在片刻間連斃崑崙派四位高手', lang='zh-tw')
tts.save('try1.mp3')

tts = gTTS(text='张无忌见三名老僧在片刻间连毙昆仑派四位高手', lang='zh-cn')
tts.save('try2.mp3')

但這結果是mp3,如果要即時講出來,我查大家一致推薦用pygame的mixer,參考這篇整合範例如下:

import time

from pygame import mixer
import tempfile
def speak(sentence, lang):
    with tempfile.NamedTemporaryFile(delete=True) as fp:
        tts=gTTS(text=sentence, lang=lang)
        tts.save('{}.mp3'.format(fp.name))
        mixer.init()
        mixer.music.load('{}.mp3'.format(fp.name))
        mixer.music.play(1)
speak('はじめまして', 'ja')
time.sleep(2)
speak('Hello World!', 'en')
time.sleep(1)
speak('機油好難喝', 'zh-tw')
time.sleep(3)
speak('bonjour', 'fr')
time.sleep(1)
speak('Guten Tag', 'de')
time.sleep(1)

都是各國的google女士。沒有選項可以調語音包是比較可惜的,例如男生或是小孩之類的。另外有slow這個參數可以放慢語速,但我覺得差異也不大,並不是到google翻譯上"練習發音"那種等級的。


上一篇
Day24 [GPT-2]寫作的培養-心中有劍,則信手拈來,草木皆可為劍
下一篇
Day26 [Python]妳聽得到
系列文
來創造一個AI角色吧-新手的探尋之路30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言